export function processWeightData(byteData) {
  const joinToString = processReceivedData(byteData);
  console.log('joinToString ', joinToString);

  // const indexOf = joinToString.indexOf('0103') / 2;

  // if (indexOf >= 0 && indexOf + 35 <= byteData.length) {
  const dataArrayList = [];
  // const data = byteData.slice(indexOf + 4, indexOf + 36);

  for (let i = 0; i <= 7; i++) {
    const weight = calculateWeight(byteData, i * 4);
    if (i === 0) {
      console.log(`第一路实时重量, weight:`, weight);
    } else {
      // console.log(`第${i + 1}路实时重量, weight:`, weight);
    }
    dataArrayList.push({
      way: i + 1,
      weight: weight
    });
  }

  return dataArrayList;
  // } else {
  //   return byteData;
  // }
}

function calculateWeight(bytes, startIndex) {
  // 获取每个字节的值
  // const byte0 = bytes[startIndex] & 0xff;
  // const byte1 = bytes[startIndex + 1] & 0xff;
  // const byte2 = bytes[startIndex + 2] & 0xff;
  // const byte3 = bytes[startIndex + 3] & 0xff;

  // const byte0 = parseInt(bytes[startIndex], 16);
  // const byte1 = parseInt(bytes[startIndex + 1], 16);
  // const byte2 = parseInt(bytes[startIndex + 2], 16);
  // const byte3 = parseInt(bytes[startIndex + 3], 16);

  const byte0 = bytes[startIndex];
  const byte1 = bytes[startIndex + 1];
  const byte2 = bytes[startIndex + 2];
  const byte3 = bytes[startIndex + 3];

  // console.log(`第${startIndex / 4 + 1}路:`, byte0, byte1, byte2, byte3);

  // 如果byte3是0，则按原方式计算
  if (byte3 === 0) {
    // const result = (byte2 * 256 + byte3) * 65536 + byte0 * 256 + byte1;
    // console.log(`Result if byte3 is 0: ${result}`);
    // return result;

    const weightBytes = new Uint8Array([byte0, byte1, byte2, byte3]); // 将Buffer转换为Uint8Array
    const weight = (weightBytes[0] + (weightBytes[1] << 8) + (weightBytes[2] << 16) + (weightBytes[3] << 24)) / 1000; // 转换为千克，假设是小数点后三位表示千克
    return weight; // 返回千克值
  } else {
    const data5 = byte2 ^ 0xff;
    const data6 = byte3 ^ 0xff;
    const data3 = byte0 ^ 0xff;
    const data4 = byte1 ^ 0xff;

    const result = -((data5 * 256 + data6) * 65536 + data3 * 256 + data4 + 1);
    // console.log(`Result if byte3 is not 0: ${result}`);
    return result;
  }
}

// 处理接收到的数据
function processReceivedData(arrayBuffer) {
  try {
    // 转换为Uint8Array进行处理
    const byteArray = new Uint8Array(arrayBuffer);

    // 转换为十六进制字符串查看
    const hexString = Array.from(byteArray)
      .map(byte => byte.toString(16).padStart(2, '0'))
      .join('');

    return hexString;
  } catch (error) {
    console.error('处理数据出错:', error);
  }
}
